package com.xhtt.modules.inspection.util;

import com.xhtt.common.utils.DateUtils;
import com.xhtt.modules.inspection.dto.InsTaskDTO;
import com.xhtt.modules.inspection.vo.InsTaskVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;

import java.time.LocalDateTime;

/**
 * 日期类型转化 string - > LocalDateTime
 *
 * @Date 2019-02-14 下午 2:26
 */
@Slf4j
public class InsTaskUtil {

    private static final String datePattern = DateUtils.DATE_PATTERN;

    private static final String datetimePattern = DateUtils.DATE_TIME_PATTERN;

    /**
     * InsTaskVO ----> InsTaskDTO
     *
     * @param insTaskVO
     * @return
     */
    public static InsTaskDTO insTaskVO2InsTaskDTO(InsTaskVO insTaskVO) {

        InsTaskDTO insTaskDTO = new InsTaskDTO();

        BeanUtils.copyProperties(insTaskVO, insTaskDTO);


        if (insTaskVO.getDateTime() != null) {
            LocalDateTime dateTime = DateUtils.string2LocalDateTime(insTaskVO.getDateTime(), datePattern);
            insTaskDTO.setDateTime(dateTime);
        }


        // 巡检时间段-日班-开始时间
        if (insTaskVO.getInspectMorningStartDate() != null) {
            LocalDateTime inspectMorningStartDate = DateUtils.string2LocalDateTime(insTaskVO.getInspectMorningStartDate(), datetimePattern);
            insTaskDTO.setInspectMorningStartDate(inspectMorningStartDate);
        } else {
            log.error("时间转换失败 待转换时间 {}", insTaskVO.getInspectMorningEndDate());
        }

        // 巡检时间段-日班-结束时间
        if (insTaskVO.getInspectMorningEndDate() != null) {
            LocalDateTime inspectMorningEndDate = DateUtils.string2LocalDateTime(insTaskVO.getInspectMorningEndDate(), datetimePattern);
            insTaskDTO.setInspectMorningEndDate(inspectMorningEndDate);
        } else {
            log.error("时间转换失败 待转换时间 {}", insTaskVO.getInspectMorningEndDate());
        }

        // 巡检时间段-夜班-开始时间
        if (insTaskVO.getInspectNightStartDate() != null) {
            LocalDateTime inspectNightStartDate = DateUtils.string2LocalDateTime(insTaskVO.getInspectNightStartDate(), datetimePattern);
            insTaskDTO.setInspectNightStartDate(inspectNightStartDate);
        } else {
            log.error("时间转换失败 待转换时间 {}", insTaskVO.getInspectNightStartDate());
        }

        // 巡检时间段-夜班-结束时间
        if (insTaskVO.getInspectNightEndDate() != null) {
            LocalDateTime inspectNightEndDate = DateUtils.string2LocalDateTime(insTaskVO.getInspectNightEndDate(), datetimePattern);
            insTaskDTO.setInspectNightEndDate(inspectNightEndDate);
        } else {
            log.error("时间转换失败 待转换时间 {}", insTaskVO.getInspectNightEndDate());
        }

        return insTaskDTO;

    }


    /**
     * 日巡检 任务时间(年月日) + 巡检时间段(时分秒)
     *
     * @param date yyyy-MM-dd
     * @param time HH:mm:ss
     * @return
     */
    public static LocalDateTime dateMerge(LocalDateTime date, LocalDateTime time) {

        return LocalDateTime.of(
                date.getYear(),
                date.getMonth(),
                date.getDayOfMonth(),
                time.getHour(),
                time.getMinute(),
                time.getSecond());
    }
}
